---
title: 配置用户模拟和代理
---

PXF使用Greenplum数据库最终用户访问Hadoop服务。默认情况下，PXF尝试使用经过GPDB身份验证的用户身份并且通过PXF连接器配置去访问数据源服务（HDFS, Hive, HBase）。注意，PXF在访问Hadoop服务时仅使用用户的登录身份。例如，如果用户以jane身份登录Greenplum数据库，然后执行SET ROLE或SET SESSION AUTHORIZATION来假定其他用户身份，则所有PXF请求仍将使用jane身份来访问Hadoop服务。

使用默认的PXF配置，您必须显式配置每个Hadoop数据源（HDFS，Hive，HBase）来允许PXF进程所有者（通常为`gpadmin`）充当模拟用户或组的代理。详情参阅[Configuring Hadoop Proxying](#hadoop), [Hive User Impersonation](#hive), and [HBase User Impersonation](#hbase)。

或者，您可以禁用PXF用户模拟功能。禁用用户模拟后，PXF将使用PXF进程的所有者（通常为`gpadmin`）来执行所有Hadoop服务请求。此行为与PXF的早期版本相匹配，但是它没有提供任何方法来控制Hadoop中不同于Greenplum数据库用户对Hadoop服务的访问。它要求`gpadmin`用户有权访问HDFS中的所有文件和目录，以及在PXF外部表定义中引用的Hive和HBase中的所有表的权限。参照[Configuring PXF User Impersonation](#pxf_cfg_proc) for information about disabling user impersonation。

## <a id="pxf_cfg_proc"></a>配置PXF用户模拟

执行以下流程在你的GPDB集群上打开或者关闭用户模拟功能。如果你第一次配置PXF，默认用户模拟是打开的。你不需要执行这个过程。

1. 以管理员用户身份登录GPDB master节点

    ``` shell
    $ ssh gpadmin@<gpmaster>
    ```

2. 重新进入PXF用户配置目录`$PGF_CONF`。用文本编辑器打开配置文件`$PXF_CONF/conf/pxf-env.sh`。例如：

    ``` shell
    gpadmin@gpmaster$ vi $PXF_CONF/conf/pxf-env.sh
    ```

3. 在`pxf-env.sh`文件中找到`PXF_USER_IMPERSONATION`设置。 将该值设置为true可打开PXF用户模拟，或将其设置为false可将其关闭。 例如：

    ``` shell
    PXF_USER_IMPERSONATION="true"
    ```

4. 使用`pxf cluster sync`命令拷贝更新的文件`pxf-env.sh`文件到每个GPDB segment主机。例如

    ``` shell
    gpadmin@gpmaster$ $GPHOME/pxf/bin/pxf cluster sync
    ```

5. 如果先前已启动PXF，请按照[Restarting PXF](cfginitstart_pxf.html#restart_pxf)中的说明在每个Greenplum数据库segment主机上重新启动它来使新设置生效。


## <a id="hadoop"></a>配置Hadoop代理

启用PXF用户角色（默认设置）后，您必须配置Hadoop`core-site.xml`配置文件以打开用户模拟PXF。 步骤如下：

1. 在你的Hadoop集群中，使用文本编辑器打开`core-site.xml`配置文件，或者使用Ambari添加或编辑此过程中描述的Hadoop属性值。

2. 设置属性值`hadoop.proxyuser.<name>.hosts`指定允许代理请求的PXF主机名列表。将PXF代理用户（通常为`gpadmin`）替换为<name>，并在用逗号分隔的列表中提供多个PXF主机名。 例如：

    ``` xml
    <property>
        <name>hadoop.proxyuser.gpadmin.hosts</name>
        <value>pxfhost1,pxfhost2,pxfhost3</value>
    </property>
    ```
3. 设置属性值`hadoop.proxyuser.<name>.groups`指定能被PXF模拟的HDFS组列表。您应该将此列表限制为仅需要从PXF访问HDFS数据的那些组。 例如：

    ``` xml
    <property>
        <name>hadoop.proxyuser.gpadmin.groups</name>
        <value>group1,group2</value>
    </property>
    ```
4. 在修改过`core-site.xml`配置文件之后，你必须重启Hadoop使你的配置生效。

5. 拷贝更新过的`core-site.xml`文件到GPDB maser 和所有segment上的Hadoop配置目录`$PXF_CONF/servers/default`

## <a id="hive"></a>Hive用户模拟

PXF Hive连接器使用Hive MetaStore确定Hive表的HDFS位置，然后直接访问基础HDFS文件。Hive不需要特定的模拟配置，因为`core-site.xml`中的Hadoop代理配置也适用于以这种方式访问的Hive表。

## <a id="hbase"></a>Hbase用户模拟

为了使用户模拟功能能够与HBase一起使用，必须在HBase配置中启用`AccessController`并重新启动群集。有关`hbase-site.xml`配置设置，请参阅《Apache HBase参考指南》中的[61.3 Server-side Configuration for Simple User Access Operation](http://hbase.apache.org/book.html#hbase.secure.configuration)以进行简单的用户访问操作。
